1. Field of the Invention
This invention relates to industrial control systems, including programmable controllers, and more particularly, to a highly distributed industrial control system and a method for programming the same.
2. Background Art
Industrial controllers such as those described in U.S. Pat. Nos. 3,810,118; 3,942,158; 4,165,534; and 4,442,504 are typically centralized, high-speed computers that may be connected to industrial equipment, such as automated assembly lines or machine tools, to operate such equipment in accordance with a stored program. The stored program includes instructions, which when executed, examine the condition of selected inputs to the controller from sensing devices on the controlled equipment, and energize or deenergize selected outputs or actuators from the controller to operate devices on the controlled equipment.
Inputs to the industrial controller may be discrete binary signals, such as those from switches, which may detect limits of process variables such as motion, temperature, time, or other quantities, or the inputs may be analog measures of process variables which are generally then converted to digital words for processing, or the inputs may be multi-variable information.
Similarly, the outputs of the industrial controller may be either discrete binary signals as produced, typically, by mechanical or solid state relays; analog outputs produced by means of a digital to analog converter; or multi-variable commands. Some of the inputs and outputs to the centralized controller may be remotely located and connected to the controller by means of a digital communications link. Typically, the network connects the controller with a remote I/O rack at which a number of inputs and outputs are clustered.
The centralized architecture of current industrial control systems reflects both the historically high cost of computer hardware (as may be reduced by the use of a single centralized controller) and the desire for centralized reporting and coordination of the operation of an entire industrial process. Nevertheless, a centralized controller architecture is not ideal for all control tasks.
For some simple control tasks, with few inputs and outputs, the centralized controller may be unnecessarily complex and expensive, providing unneeded features and capacity. Conversely, for some complex control tasks, with many inputs and outputs, the speed limitations of the centralized controller, or its link to remote inputs and outputs, may significantly degrade the performance of the control system. The centralized controller processes each input and output of the control system, sequentially. For large programs, a significant delay may occur between the changing of an input and the control of a corresponding output. If the delay is large enough, the control system may become sluggish or unpredictable. With a centralized controller, the state of each input and output must be repeatedly transmitted to the centralized controller at a rate sufficient for the target application. When there are many remote inputs and outputs to the control system, the capacity of the link between the I/O and the centralized controller may become a significant limitation.
In a centralized architecture, a failure of the single controller typically disables the entire control system. Troubleshooting the cause of the controller failure is hampered if the failure is such that the failed controller cannot report information about its internal operation or execute troubleshooting programs.
Present industrial controllers are ordinarily programmed by means of a "ladder logic" language in which the control program is represented as ladders whose vertical rails represent a power source or power return and whose rungs are series and parallel connected contacts and relay coils. The contacts may be either normally-open or normally-closed as controlled either by external inputs or by relay coils. The limited set of commands in a ladder diagram (contacts and coils) may be efficiently processed by a reduced instruction set computer ("RISC").
Although this language is simple in concept, for extremely long programs, a ladder diagram may be difficult for a human programmer to interpret. Troubleshooting large programs written in ladder logic can be difficult because the flow of control in the ladder program is not readily visualized. Further, for most control systems, additional functional elements will be required beyond contacts and relay coils, such as counters, comparators, timers and the like, whose implementation as relay logic is extremely cumbersome.